Skip to content

TST-07: Manual validation slice A - workspace shell, board lifecycle, keyboard UX#476

Merged
Chris0Jeky merged 4 commits intomainfrom
test/manual-slice-workspace-board-ux
Mar 29, 2026
Merged

TST-07: Manual validation slice A - workspace shell, board lifecycle, keyboard UX#476
Chris0Jeky merged 4 commits intomainfrom
test/manual-slice-workspace-board-ux

Conversation

@Chris0Jeky
Copy link
Copy Markdown
Owner

Summary

Closes #130

  • Add step-indexed manual validation checklist (docs/testing/manual-validation-a-workspace-board-ux.md) with 22 scenarios (A-01 through A-22)
  • Reference the new slice from docs/MANUAL_TEST_CHECKLIST.md as section P

Scope

Scenarios cover:

  • Auth flows (registration, login, auth guard redirect)
  • Workspace shell navigation (sidebar, command palette, keyboard help, quick capture, logout)
  • Board lifecycle (create, rename, archive/unarchive, action rail)
  • Board operations (columns with drag-handle reorder, cards, labels, filter panel)
  • Keyboard UX (vim-style navigation, escape behavior stack for board and shell surfaces, drag handle safety)
  • Today view and onboarding dismiss/replay

Each scenario includes step tables with expected outcomes, evidence capture guidance, automation candidate tagging, and a defect filing template.

Test plan

  • Verify checklist steps match actual UI behavior by spot-checking against source components
  • Confirm keyboard shortcuts listed match ShellKeyboardHelp.vue and BoardView.vue implementations
  • Confirm escape stack priority matches closeOpenUi() in BoardView.vue
  • Verify all workspace routes referenced exist in router/index.ts

…oard UX

Step-indexed checklist (A-01 through A-22) covering auth flows,
shell navigation, board CRUD, column/card/label ops, filter panel,
keyboard navigation, escape behavior stack, and drag handle safety.
Add section P linking to the detailed workspace/board/keyboard UX
validation slice and update last-updated date.
@gemini-code-assist
Copy link
Copy Markdown

Warning

You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again!

@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.

@Chris0Jeky
Copy link
Copy Markdown
Owner Author

Adversarial Self-Review Findings

Verified correct

  1. Keyboard shortcuts in A-06/A-17 match BoardView.vue: j/k/h/l, arrow keys, Enter, n, f, Escape, ? are all wired in useKeyboardShortcuts at lines 244-263 of BoardView.vue.
  2. Escape stack priority in A-18 matches closeOpenUi(): The priority order listed (help > label manager > starter pack > settings > filter > column form > add-card > fallback navigate) matches the if-chain at lines 200-241 of BoardView.vue.
  3. All workspace routes referenced exist in router/index.ts: /workspace/home, /workspace/today, /workspace/boards, /workspace/inbox, /workspace/review, /workspace/archive, /workspace/notifications all defined.
  4. Drag handle safety matches implementation: Both useBoardDragDrop.ts (column) and CardItem.vue (card) check data-action="drag-column-handle" / data-action="drag-card-handle" before allowing drag initiation.
  5. Auth guard matches router guard: Unauthenticated access to /workspace/* redirects to /login?redirect=... per the beforeEach guard.
  6. Filter panel types match: searchText, labelIds, dueDateFilter (with options all/overdue/due-today/due-week/no-date), showBlockedOnly match the CardFilters interface in FilterPanel.vue.

Discrepancies found in ShellKeyboardHelp.vue (pre-existing, not introduced by this PR)

These are discrepancies between what ShellKeyboardHelp.vue documents and what is actually wired:

  1. Shift+N (New column): Listed in help dialog but NOT wired in BoardView.vue shortcuts array. The checklist scenario A-06 step 4 lists this shortcut as expected -- this will fail at runtime. The checklist correctly surfaces this as a testable scenario, and running A-06 will detect it.

  2. Editor shortcuts (Ctrl+S, Ctrl+Enter, Alt+1, Alt+2, Alt+4): Listed in the "Editor" section of help dialog but NOT wired in CardModal.vue or any board component. These appear to be aspirational/planned shortcuts that were documented before implementation.

Assessment

The checklist accurately reflects the UI as implemented. The two discrepancies above are pre-existing bugs in ShellKeyboardHelp.vue (it documents shortcuts that don't exist), not issues with the checklist. Running scenario A-06 step 4 will surface these as defects to file.

No changes needed in this PR.

@Chris0Jeky
Copy link
Copy Markdown
Owner Author

Fresh Adversarial Review

Reviewed against actual component source code on main. Every scenario claim checked against real handlers, templates, and store logic.

Critical Issues

1. Wrong token storage key in A-01 (step 4) and A-08 (step 2)
The scenario says to check td_token in Local Storage. The actual key is taskdeck_token (defined in src/utils/tokenStorage.ts, line 11: const TOKEN_KEY = 'taskdeck_token'). A tester following this literally would look for the wrong key and incorrectly report a failure.

2. Shift+N (new column) is listed in ShellKeyboardHelp.vue but has NO keyboard handler
Scenario A-06 (step 4) and A-13 (step 1) both reference Shift+N as the shortcut for new column creation. The ShellKeyboardHelp dialog does display Shift+N -> "New column". However, BoardView.vue's useKeyboardShortcuts call (lines 244-263) has NO entry for Shift+N. The shortcut is documented in the help dialog but never wired. The PR scenario should flag this as a known pre-existing defect rather than listing it as expected-passing behavior.

3. Registration form has 4 fields, not 3 as stated in A-01 (step 1)
A-01 step 1 says: "Registration form renders with username, email, and password fields." The actual RegisterView.vue has 4 fields: username, email, password, AND confirm password. A tester reading "3 fields" would question whether the form is correct.

Minor Issues

4. A-12 (Board Action Rail) omits the "Open Inbox" button
The actual BoardActionRail.vue has 5 buttons: "Capture here", "Ask assistant", "Review proposals", "Open Inbox", and "Add card". Scenario A-12 only covers 4 of 5 -- it skips "Open Inbox" entirely. This is a coverage gap in the test scenario.

5. A-06 (step 4) omits f (filter panel toggle) from the listed shortcuts
The document lists shortcuts for verification in step 4 but does not include f (toggle filter panel), which IS a real registered shortcut in BoardView.vue (line 262). A tester verifying the help dialog against this list would miss that f is NOT shown in ShellKeyboardHelp.vue either -- meaning there are two gaps: the doc omits it, and the help dialog omits it.

6. A-05 (Command Palette) step 7 says type "capture" but actual keyword matching uses "capture inbox quick note modal"
This is technically fine since typing "capture" would match the keywords field, but the scenario should note that the item label is "New Capture" (not just "Capture"), making the search match work via the keywords field, not the label field.

7. A-07 (Quick Capture) does not document the text-entry guard
AppShell.vue line 106 explicitly checks !isTextEntryTarget(event.target) before opening the capture modal on Ctrl+Shift+C. If a tester has focus in a text input, the shortcut silently fails. The scenario should note this.

Observations

8. Escape stack interaction between shell and board levels is undocumented
When on a board route, pressing ? fires both the AppShell keydown handler (toggles shell keyboard help) and the BoardView useKeyboardShortcuts handler (toggles board keyboard help). Neither handler calls stopPropagation(). The document does not address this dual-handler scenario, which could confuse testers seeing unexpected behavior.

9. goBack() in BoardView pushes to /boards not /workspace/boards
BoardView.vue line 151 uses router.push('/boards') while the escape fallback at line 240 uses router.push('/workspace/boards'). The /boards path works due to a router redirect (router/index.ts line 52), but the inconsistency is worth noting since a tester watching the URL bar might see a brief redirect.

10. The duplicate section heading ## M. in MANUAL_TEST_CHECKLIST.md is pre-existing
Lines 359 and 370 both use ## M. as a section heading. The PR's addition of section ## P. is fine, but the pre-existing duplicate should be noted.

Verdict

The document is a solid, well-structured manual test checklist. The escape stack analysis, drag handle safety scenarios, and board lifecycle coverage are thorough and accurate against the real code.

However, 3 critical issues need fixing before merge:

  1. Token key name is wrong (td_token -> taskdeck_token)
  2. Shift+N shortcut is unwired and should be flagged as a known defect
  3. Registration form field count is wrong (3 -> 4)

The minor issues (missing "Open Inbox" button, missing f shortcut, text-entry guard) should also be addressed for completeness.

Chris0Jeky and others added 2 commits March 29, 2026 03:58
- Token storage key: td_token -> taskdeck_token (matches src/utils/tokenStorage.ts)
- Registration form: 3 fields -> 4 fields (includes confirm password)
- Shift+N shortcut: flag as known unwired pre-existing gap
- f (filter) shortcut: flag as wired but missing from help dialog
- A-07: document text-entry guard on Ctrl+Shift+C
- A-12: add missing "Open Inbox" button coverage (5th action rail button)
@Chris0Jeky Chris0Jeky merged commit 1967fd6 into main Mar 29, 2026
9 checks passed
@Chris0Jeky Chris0Jeky deleted the test/manual-slice-workspace-board-ux branch March 29, 2026 03:04
@github-project-automation github-project-automation bot moved this from Pending to Done in Taskdeck Execution Mar 29, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

TST-07: Manual validation slice A - workspace shell, board lifecycle, and keyboard UX

1 participant